/**
 * 验证工具类
 * 使用方式：推荐方式2
 * 方式1：
 *   1、import { 方法名 } from '@/utils/validate'
 *   2、直接调用方法名 let xx = 方法名(参数)
 * 方式2：
 *   1、直接调用方法名 let xx = this.VALIDATE.方法名(参数) 或者dom里面VALIDATE.方法名(参数)
 */
export default {
  isEquals,
  isEqualsIgnorecase,
  isNull,
  isNotNull,
  isDate,
  isTime,
  isDateTime,
  isIdcard,
  isIp,
  isImage,
  isUrl,
  isLowerCaseLetter,
  isUpperCaseLetter,
  isLetter,
  isInteger,
  isPositiveNum,
  isDouble,
  isString,
  isEmail,
  isPassword,
  isMobile,
  isPhone,
  isChinese

}
// 判断两个字符串是否相同
export function isEquals (str1, str2) {
  if (str1 === str2) {
    return true
  } else {
    return false
  }
}

// 判断两个字符串是否相同
export function isEqualsIgnorecase (str1, str2) {
  if (str1.toUpperCase() === str2.toUpperCase()) {
    return true
  } else {
    return false
  }
}

// 判断输入内容是否为空
export function isNull (str) {
  if (str === null || str.length === 0) {
    return true
  }
  return false
}

// 判断输入内容是否不为空
export function isNotNull (str) {
  return !isNull(str)
}

// 判断日期类型是否为YYYY-MM-DD格式的类型
export function isDate (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/
    const r = str.match(reg)
    if (r != null) {
      return true
    }
  }
  return false
}

// 判断日期类型是否为hh:mm:ss格式的类型
export function isTime (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^((20|21|22|23|[0-1]\d)\\:[0-5][0-9])(\\:[0-5][0-9])?$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 判断日期类型是否为YYYY-MM-DD hh:mm:ss格式的类型
export function isDateTime (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/
    const r = str.match(reg)
    if (r != null) {
      return true
    }
  }
  return false
}

// 是否身份证号
export function isIdcard (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
    return reg.test(str)
  }
  return false
}

// 是否ip地址
export function isIp (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$/
    return reg.test(str)
  }
  return false
}

// 是否是图片
export function isImage (str) {
  if (str !== null && str.length !== 0) {
    const reg = /(.*)\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$/
    return reg.test(str)
  }
  return false
}

// 合法uri
export function isUrl (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
    return reg.test(str)
  }
  return false
}

// 小写字母
export function isLowerCaseLetter (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^[a-z]+$/
    return reg.test(str)
  }
  return false
}

// 大写字母
export function isUpperCaseLetter (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^[A-Z]+$/
    return reg.test(str)
  }
  return false
}

// 大小写英文字母
export function isLetter (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^[A-Za-z]+$/
    return reg.test(str)
  }
  return false
}

// 是否为整数
export function isInteger (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^[-+]?\d*$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 是否正整数
export function isPositiveNum (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^\d+$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 判断输入的字符是否为双精度
export function isDouble (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^[-\\+]?\d+(\.\d+)?$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 判断输入的字符是否为:a-z,A-Z,0-9
export function isString (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^[a-zA-Z0-9_]+$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 判断输入的EMAIL格式是否正确
export function isEmail (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 检查密码， 密码(长度在6~30之间，只能包含字母、数字和下划线)：
export function isPassword (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^[A-Za-z0-9_]{6,30}$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 是否是手机号
export function isMobile (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^((1[3|4|5|7|8|9][0-9]{1})+\d{8})$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 是否是座机号
export function isPhone (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^0\d{2,3}-?\d{7,8}$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}

// 是否是中文
export function isChinese (str) {
  if (str !== null && str.length !== 0) {
    const reg = /^([u4E00-u9FA5]|[uFE30-uFFA0])*$/
    if (reg.test(str)) {
      return true
    }
  }
  return false
}
